﻿using System;
using System.Web.UI;
using OwnZTec.Bl;
using OwnZTec.Dto;

namespace OwnZTec.Web.conteudoseguro.Administracao
{
    public partial class UsuarioEditar : Page
    {
        #region -- Membros e construtores -------------------------------------------------------------------------------------------------
        protected DtoUsuario Usuario
        {
            get { return (DtoUsuario)Session["UsuarioEditar_Usuario"] ?? new DtoUsuario(); }
            set { Session["UsuarioEditar_Usuario"] = value; }
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
                Inicializar();
        }
        #endregion ------------------------------------------------------------------------------------------------------------------------

        #region -- Metodos ----------------------------------------------------------------------------------------------------------------
        protected void Inicializar()
        {
            if (!string.IsNullOrEmpty(Request.QueryString["Id"]))
            {
                int id;
                int.TryParse(Request.QueryString["Id"], out id);

                if (id != 0)
                {
                    var blp = new BlPerfil();

                    ddlAcesso.DataSource = blp.ListarTodos();
                    ddlAcesso.DataTextField = "Nome";
                    ddlAcesso.DataValueField = "Id";
                    ddlAcesso.DataBind();

                    var bl = new BlUsuario();

                    var usuario = bl.ListarUm(id);

                    txtId.Text = usuario.Id.ToString();
                    txtNome.Text = usuario.Nome;
                    txtLogin.Text = usuario.Login;
                    txtNotas.Text = usuario.Notas;
                    txtEmail.Text = usuario.Email;

                    ddlAcesso.SelectedValue = usuario.Perfil.Id.ToString();

                    Usuario = usuario;

                    return;
                }
            }

            ScriptManager.RegisterStartupScript(Page, Page.GetType(), "myscript", "alert('Id inválido ou não especificado!'); window.location = 'PerfilListar.aspx';", true);
        }
        #endregion ------------------------------------------------------------------------------------------------------------------------

        #region -- Eventos ----------------------------------------------------------------------------------------------------------------
        protected void CmdSalvarClick(object sender, EventArgs e)
        {
            var bl = new BlUsuario();

            if (bl.LoginExiste(txtLogin.Text, Convert.ToInt32(txtId.Text)))
            {
                lblInfo.Text = "Já existe um usuário com este login. Favor informar outro login.";

                txtLogin.Focus();
                txtLogin.Attributes["onfocus"] = "this.select();";
            }

            else
            {
                lblInfo.Text = "";

                bl.SalvarUsuario(new DtoUsuario
                                     {
                                         Id = Convert.ToInt32(txtId.Text),
                                         Nome = txtNome.Text,
                                         Login = txtLogin.Text,
                                         Perfil = new DtoPerfil { Id = Convert.ToInt32(ddlAcesso.SelectedValue) },
                                         Email = txtEmail.Text,
                                         Notas = txtNotas.Text
                                     });

                Response.Redirect("UsuarioListar.aspx");
            }
        }

        protected void CmdRestaurarClick(object sender, EventArgs e)
        {
            txtId.Text = Usuario.Id.ToString();
            txtNome.Text = Usuario.Nome;
            txtLogin.Text = Usuario.Login;
            txtNotas.Text = Usuario.Notas;
            txtEmail.Text = Usuario.Email;

            ddlAcesso.SelectedValue = Usuario.Perfil.Id.ToString();
        }
        #endregion ------------------------------------------------------------------------------------------------------------------------
    }
}